package com.sxj.corejava.code08_常用类.泛型;

/**
 * @author 石小俊
 * @date 2024年04月23日 18:15
 */
public class Emp<T, K, V, E> {

    public void show(T t, K k, V v, E e) {
        System.out.println(t);
        System.out.println(k);
        System.out.println(v);
        System.out.println(e);
    }

    public Student<? extends B> test01() {
        // 此时的方法返回值只能是B或者B的子孙类(子类、子类的子类...)类型
        // 可以直接返回B
//        return new Student<B>();
        // 也可以返回B的子类C
        return new Student<C>();
        // 不能返回父类A
//        return new Student<A>();
        // 也不能返回平级的D
//        return new Student<D>();
    }

    public Student<? super C> test02() {
        // 只能返回C或者C的祖宗类(父类、父类的父类...)类型
        // 返回C
//        return new Student<C>();
        // 返回C的父类B
//        return new Student<B>();
        // 返回C的父类的父类A
        return new Student<A>();
        // 不能返回子类E
//        return new Student<E>();
        // 也不能返回与C无关的类D
//        return new Student<D>();
    }

}

class A {

}

class B extends A {

}

class C extends B {

}

class D extends A {

}

class E extends C {

}